/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller.user;

import dao.HoadonDAO;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import pojo.Chitiethoadon;
import pojo.Hoadon;
import pojo.Nguoidung;

/**
 *
 * @author BlueZky
 */
public class lichSuMuaHangController extends AbstractController {

    public lichSuMuaHangController() {
    }

    @Override
    protected ModelAndView handleRequestInternal(
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("UTF-8");
        ModelAndView mv = null;
        HttpSession session = request.getSession();
        Nguoidung nguoiDung = (Nguoidung) session.getAttribute("nguoiDung");
        String action = request.getParameter("a");
        List<Hoadon> dsHoadon = null;

        if(nguoiDung == null){
            mv = new ModelAndView("All/dangnhap");
            mv.addObject("message", "Bạn phải đăng nhập trước!");
            return mv;
        }
        mv = new ModelAndView("User/index");

        if (action != null) {
            String PID = request.getParameter("pid");
            if (PID != null && PID.matches("^[0-9]*$")) {
                if (action.compareToIgnoreCase("c") == 0) {

                    if (!HoadonDAO.huyHoaDons(Integer.parseInt(PID))) {
                        mv.addObject("message", "Không thể hủy đơn đặt hàng");
                    }
                } else if (action.compareToIgnoreCase("e") == 0) {
                    Hoadon hoaDon = null;
                    hoaDon = HoadonDAO.layThongTin(Integer.parseInt(PID));
                    hoaDon.getChitiethoadons().size();
                    mv = new ModelAndView("User/index");
                    mv.addObject("tag", "lchinhsua");
                    session.setAttribute("hoaDon", hoaDon);
                    mv.addObject("chiTiet", hoaDon.getChitiethoadons());
                    return mv;

                } else if (action.compareToIgnoreCase("d") == 0) {
                    Hoadon hoaDon = null;
                    hoaDon = HoadonDAO.layThongTin(Integer.parseInt(PID));
                    hoaDon.getChitiethoadons().size();
                    mv = new ModelAndView("User/index");
                    mv.addObject("tag", "lchitiet");
                    mv.addObject("hoaDon", hoaDon);
                    mv.addObject("chiTiet", hoaDon.getChitiethoadons());
                    return mv;

                } else if (action.compareToIgnoreCase("uu") == 0) {
                    Hoadon hoaDon = (Hoadon) session.getAttribute("hoaDon");

                    if (hoaDon != null) {
                        String nguoiNhan = request.getParameter("receivedName");
                        String diaChi = request.getParameter("receivedAddress");
                        String soDienThoai = request.getParameter("receivedPhone");
                        String CMND = request.getParameter("receivedID");
                        String message = "";

                        hoaDon.setNguoinhan(nguoiNhan);
                        hoaDon.setDiachinhan(diaChi);
                        hoaDon.setSodtnhan(soDienThoai);
                        hoaDon.setCmndnhan(CMND);

                        message = checkValidation(hoaDon);

                        String[] soLuong = request.getParameterValues("soLuong");

                        int i = 0;
                        Iterator it = hoaDon.getChitiethoadons().iterator();
                        while (it.hasNext()) {
                            Chitiethoadon temp = (Chitiethoadon) it.next();
                            if (soLuong[i].matches("^[0-9]*$")) {

                                int isoLuong = Integer.parseInt(soLuong[i]);
                                if (isoLuong > 0) {
                                    temp.setSoluong(isoLuong);
                                }
                            } else {
                                message = "Số lượng phải là số nguyên";
                            }
                        }
                        hoaDon.calSum();

                        if(!HoadonDAO.capNhatHoaDons(hoaDon)){
                            message= "Cập nhật thất bại";
                        }
                        
                        mv = new ModelAndView("User/index");
                        mv.addObject("tag", "lchinhsua");
                        mv.addObject("hoaDon", hoaDon);
                        mv.addObject("chiTiet", hoaDon.getChitiethoadons());
                        mv.addObject("success", "false");
                        if (message.length() == 0) {
                            message = "Cập nhật thành công";
                            mv.addObject("success", "true");
                        }
                        mv.addObject("message", message);
                        return mv;
                    }
                }
            }
        }

        if (nguoiDung != null) {
            dsHoadon = HoadonDAO.layHoaDons(nguoiDung.getTendangnhap(), 20);
        }


        mv.addObject("tag", "lichsu");
        mv.addObject("lichSu", dsHoadon);

        return mv;
    }

    private String checkValidation(Hoadon hoaDon) {
        String message = "";

        if (hoaDon.getNguoinhan() == null || hoaDon.getNguoinhan().length() == 0) {
            message += "Nhập tên người nhận";
        }
        if (hoaDon.getDiachinhan() == null || hoaDon.getDiachinhan().length() == 0) {
            message += "<br/> Nhập địa chỉ người nhận";
        }
        if (hoaDon.getSodtnhan() == null || hoaDon.getSodtnhan().length() == 0) {
            message += "<br/> Nhập số điện thoại người nhận";
        } else if (!hoaDon.getSodtnhan().matches("^[0-9]*$")) {
            message += "<br/> Số điện thoại không đúng định dạng";
        }

        if (hoaDon.getCmndnhan() == null || hoaDon.getCmndnhan().length() == 0) {
            message += "<br/> Nhập số CMND người nhận.";
        } else if (!hoaDon.getCmndnhan().matches("^[0-9]*$")) {
            message += "<br/> Số CMND không đúng định dạng";
        }

        return message;
    }
}
